package cn.yitun.chat.yitunserverimapicore.business.group.action;//package com.oim.server.general.main.business.group.action;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import javax.annotation.Resource;
//
//import org.springframework.stereotype.Component;
//
//import com.oim.base.common.data.Page;
//import com.oim.server.general.main.business.group.service.GroupCommonService;
//import com.oim.server.general.main.business.group.service.GroupHeadService;
//import com.oim.server.general.main.business.group.service.GroupInviteApplyService;
//import com.oim.server.general.main.business.group.service.GroupInviteService;
//import com.oim.server.general.main.business.group.service.GroupJoinService;
//import com.oim.server.general.main.business.group.service.GroupJoinSettingService;
//import com.oim.server.general.main.business.group.service.GroupManageService;
//import com.oim.server.general.main.business.group.service.GroupMemberService;
//import com.oim.server.general.main.business.group.service.GroupService;
//import com.oim.server.general.main.group.entity.Group;
//import com.oim.server.general.main.group.entity.GroupHead;
//import com.oim.server.general.main.group.entity.GroupInviteApply;
//import com.oim.server.general.main.group.entity.GroupJoinApply;
//import com.oim.server.general.main.group.entity.GroupJoinSetting;
//import com.oim.server.general.main.group.entity.GroupJoinVerifyQuestion;
//import com.oim.server.general.main.group.entity.GroupMember;
//import com.onlyxiahui.common.message.bean.Info;
//import com.onlyxiahui.common.message.result.ResultMessage;
//import com.onlyxiahui.framework.action.dispatcher.annotation.ActionMapping;
//import com.onlyxiahui.general.annotation.parameter.Define;
//import com.onlyxiahui.im.message.base.HeadImpl;
//import com.onlyxiahui.im.message.data.main.group.GroupJoinApplyData;
//import com.onlyxiahui.im.message.data.main.group.GroupJoinSettingData;
//import com.onlyxiahui.im.message.data.main.group.GroupQuery;
//import com.onlyxiahui.im.message.data.main.group.JoinVerifyAnswer;
//import com.onlyxiahui.im.message.data.main.group.JoinVerifyQuestion;
//import com.onlyxiahui.net.session.SocketSession;
//
///**
// * 
// * Date 2019-01-20 20:49:52<br>
// * Description
// * 
// * @author XiaHui<br>
// * @since 1.0.0
// */
//@Component
////@ActionMapping(value = "1.2.201")
//public class GroupAction {
//
//	@Resource
//	private GroupService groupService;
//	@Resource
//	private GroupCommonService groupCommonService;
//	@Resource
//	private GroupMemberService groupMemberService;
//	@Resource
//	private GroupHeadService groupHeadService;
//	@Resource
//	private GroupJoinSettingService groupJoinSettingService;
//	@Resource
//	private GroupJoinService groupJoinService;
//	@Resource
//	private GroupInviteService groupInviteService;
//	@Resource
//	private GroupManageService groupManageService;
//	@Resource
//	private GroupInviteApplyService groupInviteApplyService;
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:36:56<br>
//	 * Description 条件分页搜索群
//	 * 
//	 * @author XiaHui<br>
//	 * @param groupQuery
//	 * @param page
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0001")
//	public ResultMessage queryGroupDataList(
//			@Define("body.query") GroupQuery groupQuery,
//			@Define("body.page") Page page) {
//		ResultMessage message = new ResultMessage();
//		List<Group> groupList = groupService.queryGroupList(groupQuery, page);
//		message.bodyPut("list", groupList);
//		message.bodyPut("page", page);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:37:13<br>
//	 * Description 群详情
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param groupId
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0002")
//	public ResultMessage getGroupById(
//			SocketSession socketSession,
//			@Define("body.groupId") String groupId) {
//		ResultMessage message = new ResultMessage();
//		Group group = groupService.getGroupById(groupId);
//		message.bodyPut("group", group);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Description 批量获取群信息 <br>
//	 * Date 2019-05-05 08:39:53<br>
//	 * 
//	 * @param groupIds
//	 * @return ResultMessage
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0003")
//	public ResultMessage getGroupList(
//			@Define("body.groupIds") List<String> groupIds) {
//		ResultMessage message = new ResultMessage();
//		List<Group> groupList = groupService.getGroupList(groupIds);
//		message.bodyPut("list", groupList);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:39:42<br>
//	 * Description 获取群头像信息
//	 * 
//	 * @author XiaHui<br>
//	 * @param groupId
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0004")
//	public ResultMessage getGroupHead(@Define("body.groupId") String groupId) {
//		GroupHead groupHead = groupHeadService.getGroupHeadByGroupId(groupId);
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("head", groupHead);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:40:12<br>
//	 * Description 获取个人加入群的数量
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0005")
//	public ResultMessage getGroupCountByGroupMemberUserId(SocketSession socketSession) {
//		ResultMessage message = new ResultMessage();
//		String userId = socketSession.getKey();
//		List<Group> groupList = groupCommonService.getGroupListByGroupMemberUserId(userId);
//		message.bodyPut("count", groupList.size());
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:40:32<br>
//	 * Description 获取个人加入的群列表
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0006")
//	public ResultMessage getGroupListByGroupMemberUserId(SocketSession socketSession) {
//		ResultMessage message = new ResultMessage();
//		String userId = socketSession.getKey();
//		List<Group> groupList = groupCommonService.getGroupListByGroupMemberUserId(userId);
//		message.bodyPut("list", groupList);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:42:17<br>
//	 * Description 创建群
//	 * 
//	 * @author XiaHui<br>
//	 * @param head
//	 * @param socketSession
//	 * @param group
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0008")
//	public Object addGroup(HeadImpl head, SocketSession socketSession,
//			@Define("body.group") Group group) {
//		String userId = socketSession.getKey();
//		ResultMessage message = groupService.add(head.getKey(), userId, group);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:42:29<br>
//	 * Description 修改群
//	 * 
//	 * @author XiaHui<br>
//	 * @param head
//	 * @param socketSession
//	 * @param group
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0009")
//	public Object update(
//			HeadImpl head,
//			SocketSession socketSession,
//			@Define("body.group") Group group) {
//		Info info = groupService.update(head.getKey(), group);
//		List<GroupMember> list = groupMemberService.getGroupMemberListByGroupId(group.getId());
//		List<String> ids = new ArrayList<String>();
//		for (GroupMember gm : list) {
//			ids.add(gm.getUserId());
//		}
//		// groupPush.pushUpdateGroup(head.getKey(), group, ids);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		message.bodyPut("group", group);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:42:46<br>
//	 * Description 修改头像
//	 * 
//	 * @author XiaHui<br>
//	 * @param groupHead
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0010")
//	public Object uploadHead(@Define("body.groupHead") GroupHead groupHead) {
//		return groupHeadService.uploadHead(groupHead);
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:54:27<br>
//	 * Description 转让群
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param groupId
//	 * @param newOwnerUserId
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0011")
//	public ResultMessage changeGroupOwner(
//			SocketSession socketSession,
//			@Define("body.groupId") String groupId,
//			@Define("body.newOwnerUserId") String newOwnerUserId) {
//		String oldOwnerUserId = socketSession.getKey();
//		Info info = groupManageService.changeGroupOwner(groupId, oldOwnerUserId, newOwnerUserId);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 15:04:37<br>
//	 * Description 解散群
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param groupId
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0012")
//	public ResultMessage disband(
//			SocketSession socketSession,
//			@Define("body.groupId") String groupId) {
//		String ownerUserId = socketSession.getKey();
//		Info info = groupManageService.disbandGroup(groupId, ownerUserId);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:39:08<br>
//	 * Description 群主/管理员获取申请加入数量
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @return
//	 * @since 1.0.0
//	 */
//
//	@ActionMapping(value = "1.1.0013")
//	public ResultMessage getJoinApplyCount(
//			SocketSession socketSession) {
//		Page page = new Page();
//		page.setSize(1);
//		String userId = socketSession.getKey();
//
//		groupManageService.getJoinRequestListByUserId(userId, page);
//
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("count", page.getTotalCount());
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:39:08<br>
//	 * Description 群主/管理员获取申请加入列表
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0014")
//	public ResultMessage getJoinApplyList(
//			SocketSession socketSession,
//			@Define("body.page") Page page) {
//		String userId = socketSession.getKey();
//		List<GroupJoinApply> list = groupManageService.getJoinRequestListByUserId(userId, page);
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("list", list);
//		message.bodyPut("page", page);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:44:23<br>
//	 * Description 处理加入申请
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param handle
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0015")
//	public ResultMessage joinHandle(
//			SocketSession socketSession,
//			@Define("body.applyId") String applyId,
//			@Define("body.handleType") String handleType,
//			@Define("body.message") String message,
//			@Define("body.applyUserId") String applyUserId,
//			@Define("body.groupId") String groupId) {
//
//		// String applyId;// 请求记录id
//		// String applyUserId;// 添加联系人的请求用户
//		// String groupId;// 被添加的用户
//		// String handleType;// 处理结果：0:未处理 1:同意 2:拒绝 3:忽略
//		// String message;// 附加消息
//		String handleUserId = socketSession.getKey();
//		Info info = groupJoinService.joinHandle(handleUserId, applyId, handleType, message);
//		ResultMessage rm = new ResultMessage();
//		rm.setInfo(info);
//		return rm;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:51:05<br>
//	 * Description 获取申请邀请数量
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @return
//	 * @since 1.0.0
//	 */
//
//	@ActionMapping(value = "1.1.0017")
//	public ResultMessage getInviteApplyCount(
//			SocketSession socketSession) {
//		Page page = new Page();
//		page.setSize(1);
//		String userId = socketSession.getKey();
//
//		groupManageService.getInviteRequestListByUserId(userId, page);
//
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("count", page.getTotalCount());
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:51:54<br>
//	 * Description 获取申请邀请列表
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param page
//	 * @return
//	 * @since 1.0.0
//	 */
//
//	@ActionMapping(value = "1.1.0018")
//	public ResultMessage getInviteApplyList(
//			SocketSession socketSession,
//			@Define("body.page") Page page) {
//		String userId = socketSession.getKey();
//		List<GroupInviteApply> list = groupManageService.getInviteRequestListByUserId(userId, page);
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("list", list);
//		message.bodyPut("page", page);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:56:14<br>
//	 * Description
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param handle
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0019")
//	public ResultMessage inviteVerifyHandle(
//			SocketSession socketSession,
//			@Define("body.applyId") String applyId,
//			@Define("body.handleType") String handleType) {
//		String verifyHandleUserId = socketSession.getKey();
//
//		String inviteApplyId = applyId;
//		String verifyHandleType = handleType;
//		Info info = groupInviteService.verifyHandle(verifyHandleUserId, inviteApplyId, verifyHandleType);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:42:56<br>
//	 * Description 获取验证设置
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param groupId
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0021")
//	public ResultMessage getJoinSetting(
//			SocketSession socketSession,
//			@Define("body.groupId") String groupId) {
//		// String userId = socketSession.getKey();
//		GroupJoinSetting data = groupJoinSettingService.getByGroupId(groupId);
//		List<GroupJoinVerifyQuestion> list = groupJoinSettingService.getVerifyQuestionListByGroupId(groupId);
//
//		GroupJoinSettingData joinSetting = new GroupJoinSettingData();
//		joinSetting.setGroupId(groupId);
//		joinSetting.setInviteType(data.getInviteType());
//		joinSetting.setJoinType(data.getJoinType());
//		joinSetting.setQuestion(data.getQuestion());
//
//		List<JoinVerifyQuestion> questionList = new ArrayList<>();
//
//		if (null != list) {
//			for (GroupJoinVerifyQuestion q : list) {
//				JoinVerifyQuestion jq = new JoinVerifyQuestion();
//				jq.setId(q.getId());
//				jq.setGroupId(groupId);
//				jq.setQuestion(q.getQuestion());
//			}
//		}
//
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("verifySetting", joinSetting);
//		message.bodyPut("questionList", questionList);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-26 14:43:22<br>
//	 * Description 申请加入
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param request
//	 * @param answerList
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0022")
//	public ResultMessage joinRequest(
//			SocketSession socketSession,
//			@Define("apply") GroupJoinApplyData request,
//			@Define("answerList") List<JoinVerifyAnswer> answerList) {
//		String userId = socketSession.getKey();
//		request.setApplyUserId(userId);
//		Info info = groupJoinService.joinApply(request, answerList);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:23:38<br>
//	 * Description 邀请加入
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param groupId
//	 * @param userIds
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0023")
//	public ResultMessage invite(
//			SocketSession socketSession,
//			@Define("groupId") String groupId,
//			@Define("userIds") List<String> userIds) {
//		String inviterUserId = socketSession.getKey();
//		Info info = groupInviteService.invite(inviterUserId, groupId, userIds);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:28:43<br>
//	 * Description 获取被邀请数量
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0024")
//	public ResultMessage getCountByInviteeUserId(
//			SocketSession socketSession) {
//		Page page = new Page();
//		page.setSize(1);
//		String inviteeUserId = socketSession.getKey();
//		groupInviteApplyService.getListByInviteeUserId(inviteeUserId, page);
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("count", page.getTotalCount());
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 10:29:03<br>
//	 * Description 获取被邀请列表
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param page
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0025")
//	public ResultMessage getListByInviteeUserId(
//			SocketSession socketSession,
//			@Define("page") Page page) {
//		String inviteeUserId = socketSession.getKey();
//
//		List<GroupInviteApply> list = groupInviteApplyService.getListByInviteeUserId(inviteeUserId, page);
//		ResultMessage message = new ResultMessage();
//		message.bodyPut("list", list);
//		message.bodyPut("page", page);
//		return message;
//	}
//
//	@ActionMapping(value = "1.1.0026")
//	public ResultMessage inviteInviteeHandle(
//			SocketSession socketSession,
//			@Define("applyId") String inviteApplyId,
//			@Define("handleType") String inviteeHandleType) {
//		String inviteeUserId = socketSession.getKey();
//		Info info = groupInviteService.inviteeHandle(inviteeUserId, inviteApplyId, inviteeHandleType);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		return message;
//	}
//
//	/**
//	 * 
//	 * Date 2019-01-27 12:54:59<br>
//	 * Description 退出群
//	 * 
//	 * @author XiaHui<br>
//	 * @param socketSession
//	 * @param groupId
//	 * @return
//	 * @since 1.0.0
//	 */
//	@ActionMapping(value = "1.1.0027")
//	public ResultMessage quit(
//			SocketSession socketSession,
//			@Define("groupId") String groupId) {
//		String userId = socketSession.getKey();
//		Info info = groupMemberService.quit(groupId, userId);
//		ResultMessage message = new ResultMessage();
//		message.setInfo(info);
//		return message;
//	}
//
//}
